/*
 * motor.c
 *电机控制相关的功能
 *
 *
 *  Created on: Nov 25, 2020
 *      Author: 粤嵌科技-李永安
 */

#include "motor.h"

/*
 * 函数功能:电机控制部分初始化
 * 函数参数:void
 * 函数返回值:void
 * */
void Motor_Control_Init()
{
	HAL_TIM_PWM_Start(&MOTOR_TIM,LEFT_MOTOR_UP); //启动左轮向上的PWM输出
	HAL_TIM_PWM_Start(&MOTOR_TIM,LEFT_MOTOR_DOWN); //启动左轮向后的PWM输出

	HAL_TIM_PWM_Start(&MOTOR_TIM,RIGHT_MOTOR_UP); //启动右轮向上的PWM输出
	HAL_TIM_PWM_Start(&MOTOR_TIM,RIGHT_MOTOR_DOWN); //启动右轮向上的PWM输出
}

/*
 * 函数功能:电机完全停止，注意是定时器关闭，下次使用需要再次进行初始化
 * 函数参数:void
 * 函数返回值:void
 * */
void Motor_Control_Close()
{
	HAL_TIM_PWM_Stop(&MOTOR_TIM,LEFT_MOTOR_UP); //启动左轮向上的PWM输出
	HAL_TIM_PWM_Stop(&MOTOR_TIM,LEFT_MOTOR_DOWN); //启动左轮向后的PWM输出

	HAL_TIM_PWM_Stop(&MOTOR_TIM,RIGHT_MOTOR_UP); //启动左轮向上的PWM输出
	HAL_TIM_PWM_Stop(&MOTOR_TIM,RIGHT_MOTOR_DOWN); //启动左轮向上的PWM输出
}


/*
 * 函数功能:控制所有的电机
 * 函数参数:各个前进和后退的值，范围在0-AUTO_RELOAD之间
 * 函数返回值:void
 * */
void Motor_Control_All(uint8_t left_up,uint8_t left_down,uint8_t right_up,uint8_t right_down)
{
	__HAL_TIM_SET_COMPARE(&MOTOR_TIM,LEFT_MOTOR_UP,left_up);
	__HAL_TIM_SET_COMPARE(&MOTOR_TIM,LEFT_MOTOR_DOWN,left_down);
	__HAL_TIM_SET_COMPARE(&MOTOR_TIM,RIGHT_MOTOR_UP,right_up);
	__HAL_TIM_SET_COMPARE(&MOTOR_TIM,RIGHT_MOTOR_DOWN,right_down);
}

/*
 * 函数功能:电机停止
 * 函数参数:无
 * 函数返回值:void
 * */
inline void Motor_Control_Stop()
{
	Motor_Control_All(0,0,0,0);
}

/*
 * 函数功能:车子往前走
 * 函数参数:无
 * 函数返回值:void
 * */
inline void Motor_Control_Up(uint8_t speed)
{
	Motor_Control_All(speed,0,speed,0);
}

/*
 * 函数功能:车子往后走
 * 函数参数:无
 * 函数返回值:void
 * */
inline void Motor_Control_Down(uint8_t speed)
{
	Motor_Control_All(0,speed,0,speed);
}

/*
 * 函数功能:车子往左转
 * 函数参数:无
 * 函数返回值:void
 * */
inline void Motor_Control_Left(uint8_t speed)
{
	Motor_Control_All(0,speed,speed,0);
}


/*
 * 函数功能:车子往右转
 * 函数参数:无
 * 函数返回值:void
 * */
inline void Motor_Control_Right(uint8_t speed)
{
	Motor_Control_All(speed,0,0,speed);
}
